!-------------------------------------------------------------LICENSE--------------------------------------------------------------!
!                                                                                                                                  !
!The MAP code is written in Fortran language for magnetohydrodynamics (MHD) calculation with the adaptive mesh refinement (AMR)    !
!and Message Passing Interface (MPI) parallelization.                                                                              !
!                                                                                                                                  !
!Copyright (C) 2012                                                                                                                !
!Ronglin Jiang                                                                                                                     !
!rljiang@ssc.net.cn                                                                                                                !
!585 Guoshoujing Road. Pudong, Shanghai, P.R.C. 201203                                                                             !
!                                                                                                                                  !
!This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License         !
!as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.             !
!                                                                                                                                  !
!This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of    !
!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.                        !
!                                                                                                                                  !
!You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software     !
!Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.                                                   !
!                                                                                                                                  !
!-------------------------------------------------------------LICENSE--------------------------------------------------------------!

!==============================================================================================================================================|
subroutine bnd_free_x(var, ng, nx, sides)
!==============================================================================================================================================|
!  sides = 'l' for left boundary
!  sides = 'r' for right boundary
!  sides = 'b' for both
!----------------------------------------------------------------------------------------------------------------------------------------------|

   implicit none

   integer(4), intent(in) :: nx, ng
   character(1), intent(in) ::  sides
   real(8), intent(inout) :: var(nx)

   integer(4) :: i, bnd0, bnd1
   
!----------------------------------------------------------------------------------------------------------------------------------------------|

   bnd0 = 1 + ng
   bnd1 = nx - ng

   if (sides .eq. 'l') then
      do i = 1, ng
         var(bnd0-i) = var(bnd0)
      enddo
   endif

   if (sides .eq. 'r') then
      do i = 1, ng
         var(bnd1+i) = var(bnd1)
      enddo
   endif

   if (sides .eq. 'b') then
      do i = 1, ng
         var(bnd0-i) = var(bnd0)
         var(bnd1+i) = var(bnd1)
      enddo
   endif

   return
end subroutine bnd_free_x
